package com.maozzi.gateway.feign;

import com.maozzi.common.model.ResultVO;
import com.maozzi.gateway.constant.GatewayConst;
import com.maozzi.gateway.model.UrlInfo;
import com.maozzi.gateway.model.UserInfo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 通过 feign 调用 api
 *
 * @author maozi
 */
@FeignClient(name = "passport")
public interface UserCenterService {

    /**
     * 查询url信息，是否需要登录、权限
     *
     * @param timestamp 当前时间戳
     * @param url       url
     * @param sign      当前时间戳 与 url AES 加密
     * @return 返回
     */
    @GetMapping(GatewayConst.CHECK_URL)
    ResultVO<UrlInfo> checkUrl(@RequestParam("timestamp") String timestamp, @RequestParam("url") String url, @RequestParam("sign") String sign);

    /**
     * 查询用户信息
     *
     * @param timestamp 当前时间戳
     * @param token     用户登录token
     * @param sign      当前时间戳 与 token AES 加密
     * @return 返回
     */
    @GetMapping(GatewayConst.USER_INFO_URL)
    ResultVO<UserInfo> getUserInfo(@RequestParam("timestamp") String timestamp, @RequestParam("token") String token, @RequestParam("sign") String sign);

    /**
     * 查询acl用户信息
     *
     * @param timestamp 当前时间戳
     * @param token     用户登录token
     * @param sign      当前时间戳 与 token AES 加密
     * @return 返回
     */
    @GetMapping(GatewayConst.ACL_USER_INFO_URL)
    ResultVO<UserInfo> getAclUserInfo(@RequestParam("timestamp") String timestamp, @RequestParam("token") String token, @RequestParam("sign") String sign);

}
